<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Adaptive Communication Environment</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Adaptive_Communication_Environment"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Adaptive_Communication_Environment rootpage-Adaptive_Communication_Environment skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Adaptive Communication Environment</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>L'<b>ACE</b> (<i><span class="lang-en" lang="en">Adaptive Communication Environment</span></i>, ou environnement de communication adaptatif) est un environnement de <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">programmation orientée objet</a>, il est open source et est écrit en C++. ACE contient plusieurs composants qui simplifient le développement de logiciel de communication augmentant ainsi la flexibilité, l’efficacité, l'<a href="Interop%C3%A9rabilit%C3%A9" title="Interopérabilité">interopérabilité</a>, la <a href="Fiabilit%C3%A9" title="Fiabilité">fiabilité</a> et la <a href="Portabilit%C3%A9_(informatique)" title="Portabilité (informatique)">portabilité</a>. Les composants de l’ACE fournissent différents services comme la <a href="Communication_inter-processus" title="Communication inter-processus">communication inter-processus</a> (IPC), la gestion de mémoire, la <a href="Synchronisation" title="Synchronisation">synchronisation</a>, la gestion des tâches, la gestion d’événements, la configuration de services répartis, …
</p>
<div class="mw-heading mw-heading2"><h2 id="Quelques_avantages_d’ACE"><span id="Quelques_avantages_d.E2.80.99ACE"></span>Quelques avantages d’ACE</h2></div>
<ul><li>Augmentation de la <a href="Portabilit%C3%A9_(informatique)" title="Portabilité (informatique)">portabilité</a> : les composants ACE rendent simple l’écriture d’applications réseaux <a href="Concurrence" title="Concurrence">concurrentes</a> ou autres sur un OS et de le porter vers un autre OS.</li>
<li>Augmentation de la qualité du logiciel : les composants ACE sont conçus à partir de modèles clés (<a href="Patron_de_conception" title="Patron de conception">Design Patterns</a>) qui augmente la qualité, la portabilité, l'interopérabilité ainsi que la reutilisabilité et la modularité des logiciels de communications.</li>
<li>Augmentation de l’efficacité et de la prévisibilité : ACE est conçu pour supporter une large gamme d’applications qui requièrent une <a href="Qualit%C3%A9_de_service" title="Qualité de service">qualité de service</a> (QoS), comme de faibles temps de <a href="Lag_(informatique)" class="mw-redirect" title="Lag (informatique)">latence</a>, de haute performance, et la prévisibilité pour des applications temps-réel.</li>
<li>Ce <a href="Middleware" title="Middleware">middleware</a> (logiciel intermédiaire) nous évite de coder en dur des applications comme les applications <a href="Client-serveur" title="Client-serveur">client-serveur</a> avec des dépendances de langage, de système d’exploitation, de matériel, …</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Architecture_d’ACE"><span id="Architecture_d.E2.80.99ACE"></span>Architecture d’ACE</h2></div>
<p>L’ACE est conçu en trois couches de base :
</p>
<ul><li>La couche d’adaptation au système d’exploitation</li>
<li>La couche wrapper C++</li>
<li>La couche <a href="Framework" title="Framework">framework</a> et <a href="Pattern" class="mw-disambig" title="Pattern">pattern</a></li></ul>
<p><b>La couche d’adaptation au système d’exploitation (OSAL : Operating system adaptation layer)</b>
</p><p>OSAL est une fine couche de code C++ qui se trouve entre la bibliothèque C (<a href="Interface_de_programmation" title="Interface de programmation">API</a>) du système d’exploitation et le reste de l’ACE. Cette couche nous évite d’être dépendant de la plate-forme de développement (OS), ce qui implique que le code écrit avec ACE est relativement indépendant, donc portable. C’est ce qui explique pourquoi le <a href="Framework" title="Framework">framework</a> ACE fonctionne sur de nombreux systèmes d’exploitation comme <a href="VxWorks" title="VxWorks">VxWorks</a>, Chorus, <a href="LynxOS" title="LynxOS">LynxOS</a>, <a href="RTEMS" title="RTEMS">RTEMS</a>, <a href="Win32" class="mw-redirect" title="Win32">Win32</a>, <a href="Solaris_(syst%C3%A8me_d'exploitation)" title="Solaris (système d'exploitation)">Solaris</a>, <a href="Debian" title="Debian">Debian</a>, <a href="RedHat" class="mw-redirect" title="RedHat">RedHat</a>, …
</p><p>L’OSAL encapsule donc les fonctions de l’<a href="Interface_de_programmation" title="Interface de programmation">API</a> de l’OS c’est-à-dire que cette couche fournit une <a href="Base_commune" title="Base commune">base commune</a> de fonctions systèmes à travers toutes les plateformes où ACE est porté.
</p><p><b>La couche wrapper C++</b>
</p><p>Cette couche contient des classes C++ qui encapsulent des fonctions et des données dans des interfaces orientées objets. Cette couche est la plus grande partie de l’ACE, elle contient 50 % du code total.
</p><p>Les « wrapper » C++ fournissent les mêmes services que l’OSAL, sauf que les fonctions sont organisées en classes et en objets, ce qui facilite l’utilisation de l’ACE, de plus, l’utilisation du C++ rend l’application robuste car les wrappers C++ sont fortement typés, donc le compilateur peut détecter une violation de type à la compilation plutôt qu’a l’exécution (contrairement aux API C de l’OS comme les sockets où une violation de type n’est détectée qu’à l’exécution). Les applications utilisent les classes wrappers via l’héritage, l’agrégation, et/ou l’instanciation.
</p><p><b>La couche <a href="Framework" title="Framework">framework</a> et <a href="Pattern" class="mw-disambig" title="Pattern">pattern</a></b>
</p><p>La couche framework est la couche de plus haut niveau de l’ACE. Cette couche s’appuie sur plusieurs design patterns spécifiques au domaine du logiciel de communication.
</p><p>Les Patterns fournissent des solutions à des problèmes logiciels communs surgissant dans certains contextes, ce sont des façons de programmer éprouvées et réputées pour apporter des propriétés comme la cohérence, la robustesse, la reutilisabilité, etc.
</p><p>Les frameworks sont des applications « semi-complete » qui peuvent être vus comme étant des implémentations concrètes de design pattern et qui ont pour but de fournir une structure et des fonctionnalités spécifiques à un domaine, c'est-à-dire qu'un framework est une collection de classes qui collabore pour produire une architecture réutilisable pour une famille d'applications.
</p>
<div class="mw-heading mw-heading2"><h2 id="Les_différents_Framework_ACE"><span id="Les_diff.C3.A9rents_Framework_ACE"></span>Les différents Framework ACE</h2></div>
<p><b>Reactor</b> : Interface de traitement d’événement synchrone provenant de différentes sources (Timers, I/O, signaux).
Il implémente donc, la détection d’événements de manière synchrone, le démultiplexage et la diffusion d’événements
</p><p><b>Acceptor – Connector</b> : Établit une connexion entre un client (connector) et un serveur (Acceptor) en permettant aux applications de configurer les propriétés clefs de leur topologie de connexion (Socket UNIX, UDP, TCP…), indépendamment des services qu'ils fournissent.
</p><p><b>Task</b> : Forme un modèle concurrent qui donne une stratégie de gestion de mémoire de message et de synchronisation.
</p><p><b>Proactor</b> : Interface de traitement d’événement I/O asynchrone.
Il permet donc, de demultiplexer et de répartir efficacement des événements déclenchés par l'achèvement d'opérations d'entrée-sortie asynchrones.
</p><p><b>Streams</b> : Fournit une structure pour des systèmes traitant des flots de données. Il compose donc, des services en couches et transmet des messages (entre ces couches).
</p><p><b>Service Configurator</b> : Interface de configuration d’application (à l’exécution).
Il découple le comportement des services du moment où les implémentations de ces services sont configurées dans des processus d'application.
</p>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.dre.vanderbilt.edu/~schmidt/ACE.html"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Official website</a></li>
<li><span class="ouvrage"><span class="noarchive">« <a rel="nofollow" class="external text" href="http://www.eol.ucar.edu/software/ACE/ACE-tutorial.pdf"><cite style="font-style:normal; color:var(--color-link-red, #d73333);"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> A Tutorial Introduction to the ADAPTIVE Communication Environment (ACE)</cite></a> »<sup class="">(<a rel="nofollow" class="external text" href="https://web.archive.org/web/*/http://www.eol.ucar.edu/software/ACE/ACE-tutorial.pdf">Archive.org</a> • <a rel="nofollow" class="external text" href="https://archive.wikiwix.com/cache/?url=http://www.eol.ucar.edu/software/ACE/ACE-tutorial.pdf">Wikiwix</a> • <a rel="nofollow" class="external text" href="https://archive.is/http://www.eol.ucar.edu/software/ACE/ACE-tutorial.pdf">Archive.is</a> • <a rel="nofollow" class="external text" href="https://webcache.googleusercontent.com/search?hl=fr&q=cache:http://www.eol.ucar.edu/software/ACE/ACE-tutorial.pdf">Google</a> • Que faire ?)</sup></span></span></li>
<li><a rel="nofollow" class="external text" href="http://www.dre.vanderbilt.edu/Doxygen/"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> ACE Doxygen reference</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Bibliographie">Bibliographie</h2></div>
<ul><li>Huston S. D., Johnson J. CE., Syyid U. 2003. <b>The ACE Programmer’s Guide : Pratical Design Patterns for Network and Systems Programming</b>. <a href="Addison-Wesley" title="Addison-Wesley">Addison-Wesley</a>.</li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2023-05-18" href="https://fr.wikipedia.org/wiki/?title=Adaptive_Communication_Environment&oldid=204364557">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>